From 219aa66d5da397921b2d0020eff888ad18e45789 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 19 Jun 2006 23:53:28 +0000 Subject: [PATCH] Make transparent tray icons work. (#320034, based on a patch by Dan 2006-06-19 Matthias Clasen Make transparent tray icons work. (#320034, based on a patch by Dan Winship) * gtk/gtktrayicon-x11.c (gtk_tray_icon_init): Make trayicons app-paintable and non-double buffered. * gtk/gtkrc.c (_gtk_rc_init): Give tray icons a parent-relative background in the default style. --- ChangeLog | 11 +++++++++++ ChangeLog.pre-2-10 | 11 +++++++++++ gtk/gtkrc.c | 5 +++++ gtk/gtktrayicon-x11.c | 20 +++++++++++++++++++- 4 files changed, 46 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d62521ec26..d7bbd4fd6a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2006-06-19 Matthias Clasen + + Make transparent tray icons work. (#320034, based on a + patch by Dan Winship) + + * gtk/gtktrayicon-x11.c (gtk_tray_icon_init): Make trayicons + app-paintable and non-double buffered. + + * gtk/gtkrc.c (_gtk_rc_init): Give tray icons a parent-relative + background in the default style. + 2006-06-19 Matthias Clasen * gtk/updateiconcache.c: Marks strings for translation. (#314278, diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index d62521ec26..d7bbd4fd6a 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,14 @@ +2006-06-19 Matthias Clasen + + Make transparent tray icons work. (#320034, based on a + patch by Dan Winship) + + * gtk/gtktrayicon-x11.c (gtk_tray_icon_init): Make trayicons + app-paintable and non-double buffered. + + * gtk/gtkrc.c (_gtk_rc_init): Give tray icons a parent-relative + background in the default style. + 2006-06-19 Matthias Clasen * gtk/updateiconcache.c: Marks strings for translation. (#314278, diff --git a/gtk/gtkrc.c b/gtk/gtkrc.c index edc1d86c0a..e972f9785d 100644 --- a/gtk/gtkrc.c +++ b/gtk/gtkrc.c @@ -810,7 +810,12 @@ _gtk_rc_init (void) " text[PRELIGHT] = \"#ffffff\"\n" "}\n" "\n" + "style \"gtk-default-tray-icon-style\" {\n" + " bg_pixmap[NORMAL] = \"\"\n" + "}\n" + "\n" "class \"GtkProgressBar\" style : gtk \"gtk-default-progress-bar-style\"\n" + "class \"GtkTrayIcon\" style : gtk \"gtk-default-tray-icon-style\"\n" "widget \"gtk-tooltips*\" style : gtk \"gtk-default-tooltips-style\"\n" "widget_class \"**\" style : gtk \"gtk-default-menu-item-style\"\n" "widget_class \"**\" style : gtk \"gtk-default-menu-bar-item-style\"\n" diff --git a/gtk/gtktrayicon-x11.c b/gtk/gtktrayicon-x11.c index 47badf7912..1c44ca0cb3 100755 --- a/gtk/gtktrayicon-x11.c +++ b/gtk/gtktrayicon-x11.c @@ -69,6 +69,8 @@ static void gtk_tray_icon_realize (GtkWidget *widget); static void gtk_tray_icon_unrealize (GtkWidget *widget); static gboolean gtk_tray_icon_delete (GtkWidget *widget, GdkEventAny *event); +static gboolean gtk_tray_icon_expose (GtkWidget *widget, + GdkEventExpose *event); static void gtk_tray_icon_update_manager_window (GtkTrayIcon *icon, gboolean dock_if_realized); @@ -87,6 +89,7 @@ gtk_tray_icon_class_init (GtkTrayIconClass *class) widget_class->realize = gtk_tray_icon_realize; widget_class->unrealize = gtk_tray_icon_unrealize; widget_class->delete_event = gtk_tray_icon_delete; + widget_class->expose_event = gtk_tray_icon_expose; g_object_class_install_property (gobject_class, PROP_ORIENTATION, @@ -108,7 +111,9 @@ gtk_tray_icon_init (GtkTrayIcon *icon) icon->priv->stamp = 1; icon->priv->orientation = GTK_ORIENTATION_HORIZONTAL; - + + gtk_widget_set_app_paintable (GTK_WIDGET (icon), TRUE); + gtk_widget_set_double_buffered (GTK_WIDGET (icon), FALSE); gtk_widget_add_events (GTK_WIDGET (icon), GDK_PROPERTY_CHANGE_MASK); } @@ -131,6 +136,19 @@ gtk_tray_icon_get_property (GObject *object, } } +static gboolean +gtk_tray_icon_expose (GtkWidget *widget, + GdkEventExpose *event) +{ + gdk_window_clear_area (widget->window, event->area.x, event->area.y, + event->area.width, event->area.height); + + if (GTK_WIDGET_CLASS (gtk_tray_icon_parent_class)->expose_event) + return GTK_WIDGET_CLASS (gtk_tray_icon_parent_class)->expose_event (widget, event); + + return FALSE; +} + static void gtk_tray_icon_get_orientation_property (GtkTrayIcon *icon) { -- 2.30.2